package com.zp.self.module.level_4_算法练习.数学.数学推理;

/**
 * @author By ZengPeng
 */
public class 力扣_258_各位相加 {
    //测试
    public static void main(String[] args) {

        System.out.println(new 力扣_258_各位相加().addDigits(38));
    }

    /**
     * 题目：给定一个非负整数 num，反复将各个位上的数字相加，直到结果为一位数。返回这个结果。
     *
     *示例 1:
     * 输入: num = 38
     * 输出: 2
     * 解释: 各位相加的过程为：
     * 38 --> 3 + 8 --> 11
     * 11 --> 1 + 1 --> 2
     * 由于2 是一位数，所以返回 2。
     *
     *
     * 分析：
     *      1.while+   while不断取余数和是否小于0  ，双重while
     *      2.也可以递归 +while
     *
     * 边界值注意：
     *      1.
     **/
    public int addDigits(int num) {
        int  sum ;
        while(num>=10){
            sum = 0;
            while (num>=10){
                sum+= num%10;
                num=num/10;
            }
            sum+=num;
            if(sum<10) return sum;
            num =sum;
        }
        return num;
    }

    }
